package com.example.design.结构型设计模式.装饰器模式;

// 5. 在主类中测试
public class CoffeeShopMain {
    public static void main(String[] args) {
        // 创建一个简单的咖啡
        Coffee coffee = new SimpleCoffee();
        System.out.println(coffee.getDescription() + " 费用: $" + coffee.cost());

        // 在简单咖啡的基础上添加牛奶
        coffee = new MilkDecorator(coffee);
        System.out.println(coffee.getDescription() + " 费用: $" + coffee.cost());

        // 在简单咖啡的基础上添加糖
        coffee = new SugarDecorator(coffee);
        System.out.println(coffee.getDescription() + " 费用: $" + coffee.cost());
    }
}

// 装饰器模式是一种结构型设计模式，用于动态地给一个对象添加额外的职责或功能，而不影响其他对象。它通过创建一个装饰类来包裹原有类，以增加新功能。
// 在一个咖啡店中，我们可以有不同种类的咖啡，比如基本的咖啡、加牛奶、加糖等。使用装饰器模式，我们可以灵活地为咖啡添加这些配料，而无需修改原始的咖啡类。